import router from '@/router'
import store from '@/store'

// 白名单 用户不登录也可以访问
const whitList = ['/login']

// 路由前置首守卫
router.beforeEach(async (to, from, next) => {
	// 用户已登录 不允许进入login
	if (store.getters.token) {
		if (to.path === '/login') {
			next('/')
		} else {
			// 判断用户资料是否存在，如果不存在则获取用户信息
			if (!store.getters.hasUserInfo) {
				const {
					permission
				} = await store.dispatch('user/getUserInfo')

				// 处理用户权限，筛选出需要添加的路由
				const filterRoutes = await store.dispatch('permission/filterRoutes', permission.menus)

				// 循环添加对应动态路由
				filterRoutes.forEach(item => {
					router.addRoute(item)
				})

				// 添加完动态路由之后需要进行一次主动的跳转
				return next(to.path)
			}
			next()
		}
	} else {
		// 用户未登录 只允许进入login
		if (whitList.indexOf(to.path) > -1) {
			next()
		} else {
			next('/login')
		}
	}
})
